#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
简单API POST请求工具
直接提交包含store_id和products的数据到批量处理接口
"""

import requests
import json
from api_config import APIConfig

def post_data_to_api(data):
    """
    直接POST数据到API
    
    Args:
        data: 包含store_id和products的数据字典或JSON字符串
        
    Returns:
        bool: 请求是否成功
    """
    try:
        # 如果传入的是字符串，尝试多种解析方式
        if isinstance(data, str):
            # 首先尝试标准JSON解析
            try:
                data = json.loads(data)
            except json.JSONDecodeError:
                # 如果JSON解析失败，尝试eval（Python字典格式）
                try:
                    data = eval(data)
                    print("🔧 检测到Python字典格式，已自动转换")
                except Exception:
                    raise ValueError("数据格式无法识别，请确保是有效的JSON或Python字典格式")
        
        # 获取API URL
        api_url = APIConfig.get_products_api_url()
        
        # 设置请求头
        headers = {
            'Content-Type': 'application/json',
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
        }
        
        print(f"🌐 API地址: {api_url}")
        print(f"📦 数据大小: {len(json.dumps(data))} 字符")
        if 'products' in data:
            print(f"📊 商品数量: {len(data['products'])}")
        if 'store_id' in data:
            print(f"🏪 Store ID: {data['store_id']}")
        if 'platform' in data:
            print(f"🔧 Platform: {data['platform']}")
        
        print("🚀 正在发送请求...")
        # 发送POST请求
        response = requests.post(
            api_url,
            json=data,
            headers=headers,
            timeout=60
        )
        
        print(f"📡 响应状态码: {response.status_code}")
        
        # 处理响应内容，解决乱码问题
        response_text = response.text
        try:
            # 尝试解析JSON并重新格式化（解决Unicode编码问题）
            response_json = response.json()
            formatted_response = json.dumps(response_json, ensure_ascii=False, indent=2)
            print(f"📄 响应内容（JSON格式）:")
            if len(formatted_response) > 500:
                print(f"{formatted_response[:500]}...")
            else:
                print(formatted_response)
        except:
            # 如果不是JSON，直接显示原始内容
            if len(response_text) > 500:
                print(f"📄 响应内容: {response_text[:500]}...")
            else:
                print(f"📄 响应内容: {response_text}")
        
        if response.status_code == 200:
            print("✅ 请求成功！")
            return True
        else:
            print(f"❌ 请求失败: HTTP {response.status_code}")
            return False
            
    except Exception as e:
        print(f"❌ 请求异常: {e}")
        return False

def main():
    """主函数 - 用于测试"""
    print("🚀 简单API POST工具")
    print("="*50)
    
    print("请粘贴你的数据（支持JSON格式或Python字典格式）:")
    print("输入完成后按两次回车确认")
    
    lines = []
    empty_line_count = 0
    
    while True:
        line = input()
        if line == "":
            empty_line_count += 1
            if empty_line_count >= 2:
                break
        else:
            empty_line_count = 0
            lines.append(line)
    
    if not lines:
        print("❌ 没有输入数据")
        return
    
    data_str = '\n'.join(lines)
    
    try:
        # 发送请求
        post_data_to_api(data_str)
        
    except Exception as e:
        print(f"❌ 处理数据时出错: {e}")

if __name__ == "__main__":
    main() 